home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / GRAPHICS.SWG / 0099_Pascal Image.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-26  |  2KB  |  108 lines

  1. {
  2.  BK> Could someone tell me how to view this image in Turbo Pascal 7.0 ??
  3.  
  4.   Take your data and put it above the following code.
  5.   compile and see your image.
  6.   Please note graphics functions kept a simple as possible. Crux of matter
  7.   image not programing.
  8.  
  9.   Your data was 1028 bytes long.
  10.   The first four bytes lead to two integer with value 31. ( dimensions)
  11.  
  12.   31*31 = 961.
  13.   1028 - 961 - 4(for dimensions) = 64.
  14.  
  15.   64 = ?
  16.  
  17.   Your image says "Thanks in advance" . Its a pleasure.
  18.  
  19.  
  20. _________o/_________
  21.          o\
  22. }
  23.  
  24. program demo;
  25.  
  26. Uses dos;
  27.  
  28. {cut and paste your data here }
  29.  
  30. type
  31.  
  32.   rgbx_type  = record
  33.      red,green,blue,blank : byte;
  34.   end;
  35.  
  36.   rgb_type  = record
  37.      red,green,blue,blank : byte;
  38.   end;
  39.  
  40.   img_type = record
  41.      width,                                  { dimentions }
  42.      height  : integer;
  43.      data    : array [0..31,0..31] of byte;  { image data }
  44.      pallete : array [0..15] of rgbx_type;   { no supporting evidence      }
  45.                                              { some indexes bigger than 16 }
  46.   end;
  47.  
  48.   screen_type = array [0..199,0..319] of byte;
  49.  
  50. var
  51.   screen      : screen_type absolute $a000:$0000;
  52.   colours     : array [0..255] of rgb_type;
  53.  
  54. procedure SetPallete(first_colour,num_colours : word);
  55. var
  56.   regs  : registers;
  57. begin
  58.    regs.ax := $1012;
  59.    regs.cx := num_colours;
  60.    regs.bx := first_colour;
  61.    regs.dx := ofs(colours);
  62.    regs.es := seg(colours);
  63.    intr($10,regs);
  64. end;
  65.  
  66. procedure GraphicsMode;
  67. var
  68.   regs  : registers;
  69. begin
  70.   regs.ax := $13;
  71.   intr($10,regs);
  72. end;
  73.  
  74. procedure TextMode;
  75. var
  76.   regs  : registers;
  77. begin
  78.   regs.ax := $3;   { should use a saved mode }
  79.   intr($10,regs);
  80. end;
  81.  
  82. procedure SetPixel(x,y : integer; colour : byte);
  83. begin
  84.   screen[y,x] := colour;
  85. end;
  86.  
  87. var
  88.   i,j   : integer;
  89.   img   : img_type absolute image;
  90.   dump  : char;
  91. begin
  92.   graphicsMode;
  93.   for i := 0 to 15 do
  94.      begin
  95.         colours[i].red   := img.pallete[i].red;
  96.         colours[i].green := img.pallete[i].green;
  97.         colours[i].blue  := img.pallete[i].blue;
  98.      end;
  99.  
  100.   SetPallete(0,16);
  101.   for i := 1 to 31 do
  102.      for j := 1 to 31 do
  103.         SetPixel(i,j,img.data[j,i]);
  104.  
  105.   dump := readkey;
  106.   Textmode;
  107. end.
  108.